#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
	pid_t pid;
	if ((pid = fork()) < 0)
	{
		perror("fork error");
		exit(1);
	} else if (pid == 0)
	{
		sleep(2);
		printf("child: %u %u\n",getpid(), getpgrp());
		execl("output_getpid_getpgrp.out","output_getpid_getpgrp.out",NULL);
		exit(0);
	}
	printf("father: %u %u\n",getpid(), getpgrp());
	/*
	 * fork产生的子进程与父进程属于同一个进程组
	 * exec后不会改变进程的ID和组ID
	 * 进程组，进程ID = 进程组ID， 则该进程为进程组的组长
	 * 即使进程组的组长进程已经结束，该进程组仍存在(进程组的ID仍为已经结束的组长进程的ID，只要进程组有一个进程，该进程组就是存在)
	 * */
	return 0;
}
